A typical system for processing event predicates receives a query for an occurrence of one or more predicates (e.g., a stock symbol and a predetermined price) within an event output by a data source (e.g., a publication of stock transactions on the Internet). The system may output a result when a sale of the stock symbol at the predetermined price is identified within the publication of the stock transactions. An occurrence of the predicate may be referred to as an “equals” predicate. The system may further identify a “not-equals” predicate when, for example, the stock symbol is sold at any price except the predetermined price. In the typical system, the predicate, whether equals or not-equals, may be looked up first for occurrences in an equals predicate index, and then a second time for occurrences in a not-equals predicate index.
While the typical system is effective, it generally has a significant short-coming in that the occurrence of each predicate in the query must be analyzed before the system processes a further query. The short-coming becomes noticeable and problematic when the further query includes a further predicate which is the same as the predicate previously analyzed in the query. That is, the system may be analyzing the same predicate more than once because it is included in more than one query. This redundancy increases an event processing time for a processor (and memory used) and, as a result, delays output to a user of the system. The increase in processor time and delay in output may represent significant costs to operators and/or users of the system.